package com.xuan.service.pg;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xuan.dto.pg.bazi.*;
import com.xuan.pojo.pg.PgBaZi;
import com.xuan.vo.pg.bazi.*;
import org.springframework.transaction.annotation.Transactional;

/**
 * 八字排盘Service
 */
@Transactional
public interface PgBaZiService extends IService<PgBaZi> {

    /**
     * 开始排盘
     *
     * @param dto 八字排盘数据接收类
     * @return 排盘数据
     */
    PgBaZiVo starts(PgBaZiDto dto);

    /**
     * 初始化大运流年
     *
     * @param dto 大运流年初始化请求数据
     * @return 大运基本数据、流年基本数据、小运基本数据、流月基本数据、大运流年命盘数据、大运流年与其他干支的干支留意数据
     */
    PgBaZiDaYunLiuNianInitializeVo daYunLiuNianInitialize(PgBaZiDaYunLiuNianInitializeDto dto);

    /**
     * 大运切换
     *
     * @param dto 大运切换请求数据
     * @return 流年基本数据、小运基本数据、流月基本数据、大运流年命盘数据、大运流年与其他干支的干支留意数据
     */
    PgBaZiDaYunVo daYun(PgBaZiDaYunDto dto);

    /**
     * 流年\小运切换
     *
     * @param dto 流年\小运切换请求数据
     * @return 流月基本数据、流年命盘数据、流年与其他干支的干支留意数据
     */
    PgBaZiLiuNianVo liuNian(PgBaZiLiuNianDto dto);

    /**
     * 流月切换
     *
     * @param dto 流月切换请求数据
     * @return 流日基本数据、流月命盘数据、流月与其他干支的干支留意数据
     */
    PgBaZiLiuYueVo liuYue(PgBaZiLiuYueDto dto);

    /**
     * 胎命身切换
     *
     * @param dto 胎命身切换请求数据
     * @return 胎命身数据
     */
    PgBaZiTaiMingShenVo taiMingShen(PgBaZiTaiMingShenDto dto);


}
